package model

import (
	"time"
)

type Admins struct {
	AdminID    int64     `gorm:"column:admin_id;primary_key;AUTO_INCREMENT"` // 管理员表的唯一标识
	Username   string    `gorm:"column:username;size:32;NOT NULL"`           // 用户名
	Password   string    `gorm:"column:password;size:32;NOT NULL"`           // 密码(MD5加密)
	AdminName  string    `gorm:"column:admin_name;size:32;NOT NULL"`         // 管理员真实姓名
	Status     int       `gorm:"column:status;NOT NULL"`                     // 1表示可用 0表示禁用
	CreateTime time.Time `gorm:"column:create_time;NOT NULL"`                // 创建时间
	UpdateTime time.Time `gorm:"column:update_time;NOT NULL"`                // 更新时间
}

func (m *Admins) TableName() string {
	return "t_admins"
}

type AdminAiIntelligent struct {
	ID           int64     `gorm:"column:id;primary_key;AUTO_INCREMENT"`
	InputMessage string    `gorm:"column:input_message;NOT NULL"` // 用户输入信息
	AiResult     string    `gorm:"column:ai_result"`              // AI生成结果
	UserID       int64     `gorm:"column:user_id"`
	CreateTime   time.Time `gorm:"column:create_time"`
	UpdateTime   time.Time `gorm:"column:update_time"`
}

func (m *AdminAiIntelligent) TableName() string {
	return "t_ai_intelligent"
}

type AdminBookAdmins struct {
	BookAdminID   int64     `gorm:"column:book_admin_id;primary_key;AUTO_INCREMENT"` // 图书管理员表的唯一标识
	Username      string    `gorm:"column:username;NOT NULL"`                        // 用户名
	Password      string    `gorm:"column:password;NOT NULL"`                        // 密码md5加密
	BookAdminName string    `gorm:"column:book_admin_name;NOT NULL"`                 // 图书管理员真实姓名
	Status        int       `gorm:"column:status;NOT NULL"`                          // 1表示可用 0表示禁用
	Email         string    `gorm:"column:email;NOT NULL"`                           // 电子邮箱
	CreateTime    time.Time `gorm:"column:create_time;NOT NULL"`                     // 创建时间
	UpdateTime    time.Time `gorm:"column:update_time;NOT NULL"`                     // 更新时间
}

func (m *AdminBookAdmins) TableName() string {
	return "t_book_admins"
}

type AdminBookRule struct {
	RuleID           int       `gorm:"column:rule_id;primary_key;AUTO_INCREMENT"` // 借阅规则记录的唯一标识
	BookRuleID       int       `gorm:"column:book_rule_id;NOT NULL"`              // 借阅规则编号
	BookDays         int       `gorm:"column:book_days;NOT NULL"`                 // 借阅天数
	BookLimitNumber  int       `gorm:"column:book_limit_number;NOT NULL"`         // 限制借阅的本数
	BookLimitLibrary string    `gorm:"column:book_limit_library;NOT NULL"`        // 限制的图书馆
	BookOverdueFee   float64   `gorm:"column:book_overdue_fee;NOT NULL"`          // 图书借阅后每天逾期费用
	CreateTime       time.Time `gorm:"column:create_time;NOT NULL"`               // 创建时间
	UpdateTime       time.Time `gorm:"column:update_time;NOT NULL"`               // 更新时间
}

func (m *AdminBookRule) TableName() string {
	return "t_book_rule"
}

type AdminBookType struct {
	TypeID      int       `gorm:"column:type_id;primary_key;AUTO_INCREMENT"` // 图书类别唯一标识
	TypeName    string    `gorm:"column:type_name;NOT NULL"`                 // 借阅类别的昵称
	TypeContent string    `gorm:"column:type_content;NOT NULL"`              // 借阅类别的描述
	CreateTime  time.Time `gorm:"column:create_time;NOT NULL"`               // 创建时间
	UpdateTime  time.Time `gorm:"column:update_time;NOT NULL"`               // 更新时间
}

func (m *AdminBookType) TableName() string {
	return "t_book_type"
}

type AdminBooks struct {
	BookID          int       `gorm:"column:book_id;primary_key;AUTO_INCREMENT"` // 图书表唯一标识
	BookNumber      int64     `gorm:"column:book_number;NOT NULL"`               // 图书编号 图书的唯一标识
	BookName        string    `gorm:"column:book_name;NOT NULL"`                 // 图书名称
	BookAuthor      string    `gorm:"column:book_author;NOT NULL"`               // 图书作者
	BookLibrary     string    `gorm:"column:book_library;NOT NULL"`              // 图书所在图书馆名称
	BookType        string    `gorm:"column:book_type;NOT NULL"`                 // 图书类别
	BookLocation    string    `gorm:"column:book_location;NOT NULL"`             // 图书位置
	BookStatus      string    `gorm:"column:book_status;NOT NULL"`               // 图书状态
	BookDescription string    `gorm:"column:book_description;NOT NULL"`          // 图书描述
	CreateTime      time.Time `gorm:"column:create_time;NOT NULL"`               // 创建时间
	UpdateTime      time.Time `gorm:"column:update_time;NOT NULL"`               // 更新时间
}

func (m *AdminBooks) TableName() string {
	return "t_books"
}

type AdminBooksBorrow struct {
	BorrowID   int       `gorm:"column:borrow_id;primary_key;AUTO_INCREMENT"` // 借阅表唯一标识
	CardNumber int64     `gorm:"column:card_number;NOT NULL"`                 // 借阅证编号 固定11位随机生成 用户和图书关联的唯一标识
	BookNumber int64     `gorm:"column:book_number;NOT NULL"`                 // 图书编号 图书唯一标识
	BorrowDate time.Time `gorm:"column:borrow_date;NOT NULL"`                 // 借阅日期
	CloseDate  time.Time `gorm:"column:close_date;NOT NULL"`                  // 截止日期
	ReturnDate time.Time `gorm:"column:return_date"`                          // 归还日期
	CreateTime time.Time `gorm:"column:create_time;NOT NULL"`                 // 创建时间
	UpdateTime time.Time `gorm:"column:update_time;NOT NULL"`                 // 更新时间
}

func (m *AdminBooksBorrow) TableName() string {
	return "t_books_borrow"
}

// AdminChart 图表信息表
type AdminChart struct {
	ID          int64     `gorm:"column:id;primary_key;AUTO_INCREMENT"`                  // id
	Name        string    `gorm:"column:name"`                                           // 图标名称
	Goal        string    `gorm:"column:goal"`                                           // 分析目标
	ChartData   string    `gorm:"column:chart_data"`                                     // 图标数据
	ChartType   string    `gorm:"column:chart_type"`                                     // 图标类型
	GenChart    string    `gorm:"column:gen_chart"`                                      // 生成的图标数据
	GenResult   string    `gorm:"column:gen_result"`                                     // 生成的分析结论
	Status      string    `gorm:"column:status;default:wait;NOT NULL"`                   // wait,running,succeed,failed
	ExecMessage string    `gorm:"column:exec_message"`                                   // 执行信息
	AdminID     int64     `gorm:"column:admin_id"`                                       // 创建管理员 id
	CreateTime  time.Time `gorm:"column:create_time;default:CURRENT_TIMESTAMP;NOT NULL"` // 创建时间
	UpdateTime  time.Time `gorm:"column:update_time;default:CURRENT_TIMESTAMP;NOT NULL"` // 更新时间
	IsDelete    int       `gorm:"column:isDelete;default:0;NOT NULL"`                    // 是否删除
}

func (m *AdminChart) TableName() string {
	return "t_chart"
}

type AdminChat struct {
	ID int64 `gorm:"column:id;primary_key;AUTO_INCREMENT"` // 聊天记录id

	FromID int64 `gorm:"column:from_id;NOT NULL"` // 发送消息者id

	ToID         int64     `gorm:"column:to_id"`                  // 接受消息者id,可以为空
	Text         string    `gorm:"column:text"`                   // 消息内容
	ChatType     int       `gorm:"column:chat_type;NOT NULL"`     // 聊天类型 1-私聊 2-群聊
	CreateTime   time.Time `gorm:"column:create_time;NOT NULL"`   // 创建时间
	UpdateTime   time.Time `gorm:"column:update_time;NOT NULL"`   // 更新时间
	MessageType  int       `gorm:"column:message_type;NOT NULL"`  // 消息类型 1 文本 2 撤回消息 3 图片 4 语音 5 视频
	Role         int       `gorm:"column:role;NOT NULL"`          // 消息发送者身份 1 用户 2 图书管理员
	ReplyMessage string    `gorm:"column:reply_message;NOT NULL"` // 回复的消息内容
}

func (m *AdminChat) TableName() string {
	return "t_chat"
}

type AdminComment struct {
	CommentID      int       `gorm:"column:comment_id;primary_key;AUTO_INCREMENT"` // 留言表唯一标识
	CommentMessage string    `gorm:"column:comment_message;NOT NULL"`              // 弹幕的内容
	CreateTime     time.Time `gorm:"column:create_time;NOT NULL"`                  // 创建时间
	UpdateTime     time.Time `gorm:"column:update_time;NOT NULL"`                  // 更新时间
	UserID         int64     `gorm:"column:user_id;NOT NULL"`                      // 发布人id
}

func (m *AdminComment) TableName() string {
	return "t_comment"
}

type AdminNotice struct {
	NoticeID      int       `gorm:"column:notice_id;primary_key;AUTO_INCREMENT"` // 公告表唯一标识
	NoticeTitle   string    `gorm:"column:notice_title;NOT NULL"`                // 公告题目
	NoticeContent string    `gorm:"column:notice_content;NOT NULL"`              // 公告内容
	NoticeAdminID int64     `gorm:"column:notice_admin_id;NOT NULL"`             // 发布公告的管理员id
	CreateTime    time.Time `gorm:"column:create_time;NOT NULL"`                 // 创建时间
	UpdateTime    time.Time `gorm:"column:update_time;NOT NULL"`                 // 更新时间
}

func (m *AdminNotice) TableName() string {
	return "t_notice"
}

type AdminUserInterfaceInfo struct {
	ID          int64 `gorm:"column:id;primary_key;AUTO_INCREMENT"`
	UserID      int64 `gorm:"column:user_id;NOT NULL"`             // 用户id或管理员id
	InterfaceID int64 `gorm:"column:interface_id;NOT NULL"`        // 1 表示AI聊天接口 2表示智能分析接口
	TotalNum    int   `gorm:"column:total_num;default:0;NOT NULL"` // 总共调用接口次数

	LeftNum    int       `gorm:"column:left_num;default:0;NOT NULL"` // 剩余接口可用次数
	CreateTime time.Time `gorm:"column:create_time;NOT NULL"`        // 创建时间
	UpdateTime time.Time `gorm:"column:update_time;NOT NULL"`        // 更新时间
}

func (m *AdminUserInterfaceInfo) TableName() string {
	return "t_user_interface_info"
}

type AdminUsers struct {
	UserID     int64     `gorm:"column:user_id;primary_key;AUTO_INCREMENT"` // 用户表的唯一标识
	Username   string    `gorm:"column:username;NOT NULL"`                  // 用户名
	Password   string    `gorm:"column:password;NOT NULL"`                  // 密码 base64加密
	CardName   string    `gorm:"column:card_name;NOT NULL"`                 // 真实姓名
	CardNumber int64     `gorm:"column:card_number;NOT NULL"`               // 借阅证编号 固定11位随机生成 非空
	RuleNumber int       `gorm:"column:rule_number;NOT NULL"`               // 规则编号 可以自定义也就是权限功能
	Status     int       `gorm:"column:status;NOT NULL"`                    // 1表示可用 0表示禁用
	CreateTime time.Time `gorm:"column:create_time;NOT NULL"`               // 创建时间
	UpdateTime time.Time `gorm:"column:update_time;NOT NULL"`               // 更新时间
}

func (m *AdminUsers) TableName() string {
	return "t_users"
}

type AdminViolation struct {
	ViolationID      int       `gorm:"column:violation_id;primary_key;AUTO_INCREMENT"` // 违章表唯一标识
	CardNumber       int64     `gorm:"column:card_number;NOT NULL"`                    // 借阅证编号 11位 随机生成
	BookNumber       int64     `gorm:"column:book_number;NOT NULL"`                    // 图书编号 图书唯一标识
	BorrowDate       time.Time `gorm:"column:borrow_date;NOT NULL"`                    // 借阅日期
	CloseDate        time.Time `gorm:"column:close_date;NOT NULL"`                     // 截止日期
	ReturnDate       time.Time `gorm:"column:return_date"`                             // 归还日期
	ViolationMessage string    `gorm:"column:violation_message"`                       // 违章信息
	ViolationAdminID int64     `gorm:"column:violation_admin_id;NOT NULL"`             // 违章信息管理员的id
	CreateTime       time.Time `gorm:"column:create_time;NOT NULL"`                    // 创建时间
	UpdateTime       time.Time `gorm:"column:update_time;NOT NULL"`                    // 更新时间
}

func (m *AdminViolation) TableName() string {
	return "t_violation"
}
